/*********************************************************************

	SCUMiX(R) SWAT JavaScript Toolkit
	ext.algorithm.queue.js

	author: scumyang
	create: 2011-08-22
	desc. : 算法.队列
	update:

*********************************************************************/

/*

** 用例 **
queue = new $.ext.algorithm.queue();
for( var i=0; i<5; i++ )
	queue.put( {id:i,text:''} );

*/

/**
 * Swat Ext: algorithm.queue
 */	
if( swat && swat.version >= 3.0 )
{
	/**
	 * 构造
	 */
	swat.ext.algorithm.queue = function()
	{
		this.className = 'ext.algorithm.queue';
		this.m_items = new Array();
		this.m_itemIndex = -1;
	}

	swat.ext.algorithm.queue.prototype =
	{
		/**
		 * 存入值
		 */
		put: function( A )
		{
			this.m_items.push( A );
			return this;
		},

		/**
		 * 按 ID 取值
		 */
		get: function( __id )
		{
			return this.m_items[__id];
		},

		/**
		 * 是否还有下一个值可取
		 */
		hasNext: function()
		{
			return this.m_itemIndex < this.m_items.length - 1;
		},

		/**
		 * 顺序取出下一个值
		 * 取出游标指向的值, 并将游标向后移动1位, 若超出队列尾, 则回绕至起始位置.
		 */
		pickNext: function()
		{
			if( ++this.m_itemIndex > this.m_items.length - 1 ) this.m_itemIndex = 0;
			return this.m_items[this.m_itemIndex];
		},

		/**
		 * 取队列长度
		 */
		size: function()
		{
			return this.m_items.length;
		}
	}
}
